using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using AgenciaEmpleo;
using VB_ObjetosdeNegocio.BO;

namespace HistoriaLaboral.AltaPersonas
{
    public partial class frmAltaPersona3 : AgenciaEmpleo.Plantillas.frmMoldeAltaPersonas
    {
        tPersonas mPersona = new tPersonas();
        #region Singleton

        static private frmAltaPersona3 formAltaPersona = null;
        public frmAltaPersona3()
        {
            InitializeComponent();
            cboxOperaPc.Text = "No";
            mPersona.IdPersona = 0;
        }
        public frmAltaPersona3(int pIdPersona)
        {
            InitializeComponent();
            cboxOperaPc.Text = "No";
            mPersona.IdPersona = pIdPersona;
            mPersona.Traer_objeto();
            CargarPersona(mPersona);
        }


        static public frmAltaPersona3 GetInstance()
        {
            if (formAltaPersona == null || formAltaPersona.IsDisposed == true)
            {
                formAltaPersona = new frmAltaPersona3();
            }
            formAltaPersona.BringToFront();
            return formAltaPersona;
        }
        static public frmAltaPersona3 GetInstance(int pIdPersona)
        {
            if (formAltaPersona == null || formAltaPersona.IsDisposed == true)
            {
                formAltaPersona = new frmAltaPersona3(pIdPersona);
            }
            formAltaPersona.BringToFront();
            return formAltaPersona;
        }
        #endregion

        private void CargarPersona(tPersonas mPersona)
        {
            //craga Estudios
            //nivel, idEstudio, Titulo,idTitulo, Institucion, Situacion, Fecha

            List<tTitulo_x_Persona> listaTitulos = new List<tTitulo_x_Persona>();
            listaTitulos = mPersona.ListatTitulo_x_Persona;

            foreach (tTitulo_x_Persona titulo in listaTitulos)
            {
                string fecha;
                if (titulo.cFechaEgreso == null)
                    fecha = "";
                else
                    fecha = titulo.cFechaEgreso.Value.ToShortDateString();

                dgvEstudios.Rows.Add(titulo.tTitulos.tEstudios.cNivel, titulo.tTitulos.IdEstudio.ToString(),
                    titulo.tTitulos.cNombre, titulo.IdTitulo, titulo.cEntidadEducativa, titulo.cCompleto,
                    fecha);
                dgvEstudios.Rows[dgvEstudios.Rows.Count - 1].Tag = "db";
            }

            //cargar Opera PC
            tCapacidad_x_Persona mcapacidad = new tCapacidad_x_Persona();
            if (mPersona.ListatCapacidad_x_Persona.Count != 0)
            {
                mcapacidad = mPersona.ListatCapacidad_x_Persona[0];

                cboxOperaPc.Text = "Si";
                txtProgramas.Text = mcapacidad.cObservaciones;

            }
            // cargar Idiomas
            //idioma, idIdioma, nivel, oral, escrito, examenes
            List<tIdioma_x_Persona> listaIdiomas = new List<tIdioma_x_Persona>();
            listaIdiomas = mPersona.ListatIdioma_x_Persona;
            foreach (tIdioma_x_Persona idioma in listaIdiomas)
            {
                dgvIdiomas.Rows.Add(idioma.tIdiomas.cNombre, idioma.IdIdioma.ToString(), idioma.cNivel,
                    idioma.cOral, idioma.cEscrito, idioma.cObservaciones);
                dgvIdiomas.Rows[dgvIdiomas.Rows.Count - 1].Tag = "db";
            }
            // Cargar Cursos realizados
            //AREA, CURSO, IDCURSO, NOMBRE, FECHA , ENTIDADeDUCATIVA
            List<tCursos_x_Persona> listaCurso = new List<tCursos_x_Persona>();
            listaCurso = mPersona.ListatCursos_x_Persona;
            foreach (tCursos_x_Persona curso in listaCurso)
            {
                string fecha;
                if (curso.cFechaInicio == null) fecha = "";
                else fecha = curso.cFechaInicio.Value.ToShortDateString(); 
                dgvCursosRealizados.Rows.Add(curso.tCursos.tArea_Cursos.cNombre,
                    curso.tCursos.cNombre, curso.IdCurso, curso.cTitulo,fecha,
                    curso.cEntidadEducativa);
                dgvCursosRealizados.Rows[dgvCursosRealizados.Rows.Count - 1].Tag = "db";
            }


        }
        private void btnAgregarEstudio_Click(object sender, EventArgs e)
        {
            frmEstudios frm = new frmEstudios();
            if (frm.ShowDialog() == DialogResult.OK)
            {

                dgvEstudios.Rows.Add(frm.cboxNivel.Text, frm.cboxNivel.SelectedValue.ToString(),
                    frm.cboxTitulo.Text, frm.cboxTitulo.SelectedValue.ToString(),
                    frm.txtInstitucion.Text, frm.cboxCompleto.Text,
                    frm.txtFechaFin.Text.TrimStart("  /  /".ToCharArray()));

            }
        }


        private void btnAtras_Click(object sender, EventArgs e)
        {
            frmAltaPersona2 frm = frmAltaPersona2.GetInstance();
            frm.MdiParent = this.MdiParent;
            this.Visible = false;
            frm.Show();
        }

        private void btnSiguiente_Click(object sender, EventArgs e)
        {
            if (mPersona.IdPersona == 0)
            {
                frmAltaPersona4 frm = frmAltaPersona4.GetInstance();
                frm.MdiParent = this.MdiParent;
                this.Visible = false;
                frm.Show();
            }
            else
            {
                frmAltaPersona4 frm = frmAltaPersona4.GetInstance(mPersona.IdPersona);
                frm.MdiParent = this.MdiParent;
                this.Visible = false;
                frm.Show();
            }
        }



        private void btnCancelar_Click(object sender, EventArgs e)
        {
            frmPrincipal padre = (frmPrincipal)this.MdiParent;
            padre.CloseMDIChilds("WizardAltaPersonas");

        }

        private void btnQuitarEstudio_Click(object sender, EventArgs e)
        {
            if (dgvEstudios.SelectedRows.Count != 0)
            {

                tTitulo_x_Persona titulo = new tTitulo_x_Persona();
                titulo.IdTitulo = int.Parse(dgvEstudios.SelectedRows[0].Cells[3].Value.ToString());
                titulo.IdPersona = mPersona.IdPersona;
                titulo.Eliminar();
                if (dgvEstudios.SelectedRows[0].Tag != null)
                    dgvEstudios.SelectedRows[0].Visible = false;
                else
                    dgvEstudios.Rows.Remove(dgvEstudios.CurrentRow);

            }
        }

        private void btnAgregarIdioma_Click(object sender, EventArgs e)
        {
            //idioma, idIdioma, nivel, oral, escrito, examenes
            frmIdiomas frm = new frmIdiomas();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                String vOral;
                String vEscrito;
                if (frm.ckboxOral.Checked) vOral = "Si";
                else vOral = "No";
                if (frm.ckboxEscrito.Checked) vEscrito = "Si";
                else vEscrito = "No";
                foreach (DataGridViewRow dr in dgvIdiomas.Rows)
                {
                    if (dr.Cells[0].Value.ToString() == frm.cboxIdioma.Text)
                    {
                        dr.Visible = true;
                        return;
                    }
                }

                dgvIdiomas.Rows.Add(frm.cboxIdioma.Text, frm.cboxIdioma.SelectedValue.ToString(),
                    frm.cboxNivel.Text, vOral, vEscrito, frm.txtObservaciones.Text);

            }

        }

        private void btnQuitarIdioma_Click(object sender, EventArgs e)
        {
            //idioma, idIdioma, nivel, oral, escrito, examenes
            if (dgvIdiomas.SelectedRows.Count != 0)
            {

                tIdioma_x_Persona Idioma = new tIdioma_x_Persona();
                Idioma.IdIdioma = int.Parse(dgvEstudios.SelectedRows[0].Cells[1].Value.ToString());
                Idioma.IdPersona = mPersona.IdPersona;
                if (dgvIdiomas.SelectedRows[0].Tag != null)
                    dgvIdiomas.SelectedRows[0].Visible = false;
                else
                    dgvIdiomas.Rows.Remove(dgvIdiomas.CurrentRow);
            }
        }

        private void btnAgregarCurso_Click(object sender, EventArgs e)
        {
            //AREA, CURSO, IDCURSO, NOMBRE, FECHA , ENTIDADeDUCATIVA

            frmCursosRealizados frm = new frmCursosRealizados();
            int idCurso;
            if (frm.ShowDialog() == DialogResult.OK)
            {
                foreach (DataGridViewRow dr in dgvCursosRealizados.Rows)
                {
                    bool existe = true;
                    existe = existe &
                        (dr.Cells[0].Value.ToString() == frm.cboxAreaCurso.Text) &
                        (dr.Cells[1].Value.ToString() == frm.cboxCurso.Text);

                    if (existe)
                    { return; }
                }

                if (frm.cboxCurso.Text != "")
                    idCurso = int.Parse(frm.cboxCurso.SelectedValue.ToString());
                else idCurso = 0;
                dgvCursosRealizados.Rows.Add(frm.cboxAreaCurso.Text, frm.cboxCurso.Text, idCurso.ToString()
                    , frm.txtNombre.Text, frm.txtFecha.Text.TrimStart("  /  /".ToCharArray()),
                    frm.txtEntidadEducativa.Text);
            }

        }

        private void btnQutarCurso_Click(object sender, EventArgs e)
        {
            //AREA, CURSO, IDCURSO, NOMBRE, FECHA , ENTIDADeDUCATIVA
            if (dgvCursosRealizados.SelectedRows.Count != 0)
            {

                tCursos_x_Persona cursos = new tCursos_x_Persona();
                cursos.IdCurso = int.Parse(dgvCursosRealizados.SelectedRows[0].Cells[2].Value.ToString());
                cursos.IdPersona = mPersona.IdPersona;

                if (dgvCursosRealizados.SelectedRows[0].Tag != null)
                    dgvCursosRealizados.SelectedRows[0].Visible = false;
                else
                    dgvCursosRealizados.Rows.Remove(dgvCursosRealizados.SelectedRows[0]);
            }
        }

        public void GuardarEstudios(int IdPersona)
        {
            //nivel, idEstudio, Titulo,idTitulo, Institucion, Situacion, Fecha
            if (dgvEstudios.Rows.Count != 0)
            {
                foreach (DataGridViewRow dr in dgvEstudios.Rows)
                {
                    tTitulo_x_Persona mTitulosxPersona = new tTitulo_x_Persona();
                    mTitulosxPersona.IdPersona = IdPersona;
                    mTitulosxPersona.IdTitulo = Int32.Parse(dr.Cells[3].Value.ToString());
                    mTitulosxPersona.cEntidadEducativa = dr.Cells[4].Value.ToString();
                    mTitulosxPersona.cCompleto = dr.Cells[5].Value.ToString();
                    try
                    {
                        mTitulosxPersona.cFechaEgreso = System.DateTime.Parse(dr.Cells[6].Value.ToString());
                    }
                    catch { }
                    //"mTitulosxPersona.cFehcaIngreso = null;
                    if (dr.Visible)
                        mTitulosxPersona.Guardar();
                    else
                        mTitulosxPersona.Eliminar();
                }
            }

        }
        public void GuardarIdiomas(int pIdPersona)
        {
            //idioma, idIdioma, nivel, oral, escrito, examenes
            if (dgvIdiomas.Rows.Count != 0)
            {
                foreach (DataGridViewRow dr in dgvIdiomas.Rows)
                {
                    tIdioma_x_Persona mIdiomasxPersona = new tIdioma_x_Persona();
                    mIdiomasxPersona.IdPersona = pIdPersona;
                    mIdiomasxPersona.IdIdioma = Int32.Parse(dr.Cells[1].Value.ToString());
                    mIdiomasxPersona.cNivel = dr.Cells[2].Value.ToString();
                    mIdiomasxPersona.cOral = dr.Cells[3].Value.ToString();
                    mIdiomasxPersona.cEscrito = dr.Cells[4].Value.ToString();
                    mIdiomasxPersona.cObservaciones = dr.Cells[5].Value.ToString();
                    if (dr.Visible)
                        mIdiomasxPersona.Guardar();
                    else
                        mIdiomasxPersona.Eliminar();
                }
            }

        }
        public void GuardarCursosRealizados(int pIdPersona)
        {
            //Formato del dgv
            //AREA, CURSO, IDCURSO, NOMBRE, FECHA , ENTIDADeDUCATIVA
            if (dgvCursosRealizados.Rows.Count != 0)
            {
                foreach (DataGridViewRow dr in dgvCursosRealizados.Rows)
                {
                    tCursos_x_Persona mCursos = new tCursos_x_Persona();
                    mCursos.IdCurso = Int32.Parse(dr.Cells[2].Value.ToString());
                    mCursos.IdPersona = pIdPersona;
                    mCursos.cTitulo = dr.Cells[3].Value.ToString();
                    try
                    {
                        mCursos.cFechaInicio = System.DateTime.Parse(dr.Cells[4].Value.ToString());
                    }
                    catch { }
                    mCursos.cEntidadEducativa = dr.Cells[5].Value.ToString();
                    if (dr.Visible)
                        mCursos.Guardar();
                    else
                        mCursos.Eliminar();
                }
            }

        }
        public void GuardarCapacidades(int pIdPersona)
        {
            tCapacidad_x_Persona mCapacidad = new tCapacidad_x_Persona();
            mCapacidad.IdCapacidad = 1;
            mCapacidad.IdPersona = pIdPersona;
            mCapacidad.cNivel = "";
            mCapacidad.cObservaciones = this.txtProgramas.Text;
            if (cboxOperaPc.Text == "Si")
            {
                mCapacidad.Guardar();
            }
            else
            {

                if (mPersona.IdPersona != 0)
                {
                    mCapacidad.Eliminar();
                }
            }
        }

        private void cboxOperaPc_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboxOperaPc.Text == "No")
            { txtProgramas.Enabled = false; }
            else
            { txtProgramas.Enabled = true; }
        }

        private void dgvEstudios_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //nivel, idEstudio, Titulo,idTitulo, Institucion, Situacion, Fecha
            if (dgvEstudios.SelectedRows.Count != 0)
            {
                frmEstudios frm = new frmEstudios();
                frm.cboxNivel.Text = dgvEstudios.CurrentRow.Cells[0].Value.ToString();
                frm.CargarTitulos();
                frm.cboxTitulo.Text = dgvEstudios.CurrentRow.Cells[2].Value.ToString();
                frm.txtInstitucion.Text = dgvEstudios.CurrentRow.Cells[4].Value.ToString();
                frm.cboxCompleto.Text = dgvEstudios.CurrentRow.Cells[5].Value.ToString();
                frm.txtFechaFin.Text = dgvEstudios.CurrentRow.Cells[6].Value.ToString();
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    dgvEstudios.Rows.Add(frm.cboxNivel.Text, frm.cboxNivel.SelectedValue.ToString(),
                        frm.cboxTitulo.Text, frm.cboxTitulo.SelectedValue.ToString(),
                        frm.txtInstitucion.Text, frm.cboxCompleto.Text,
                        frm.txtFechaFin.Text.TrimStart("  /  /".ToCharArray()));
                    dgvEstudios.Rows.Remove(dgvEstudios.CurrentRow);
                }
            }
        }

        private void dgvIdiomas_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //idioma, idIdioma, nivel, oral, escrito, examenes
            if (dgvIdiomas.SelectedRows.Count != 0)
            {
                frmIdiomas frm = new frmIdiomas();
                frm.cboxIdioma.Text = dgvIdiomas.CurrentRow.Cells[0].Value.ToString();
                frm.cboxNivel.Text = dgvIdiomas.CurrentRow.Cells[2].Value.ToString();
                if (dgvIdiomas.CurrentRow.Cells[3].Value.ToString() == "SI")
                    frm.ckboxOral.Checked = true;
                else frm.ckboxOral.Checked = false;
                if (dgvIdiomas.CurrentRow.Cells[4].Value.ToString() == "SI")
                    frm.ckboxEscrito.Checked = true;
                else frm.ckboxEscrito.Checked = false;
                frm.txtObservaciones.Text = dgvIdiomas.CurrentRow.Cells[5].Value.ToString();
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    String vOral;
                    String vEscrito;
                    if (frm.ckboxOral.Checked) vOral = "Si";
                    else vOral = "No";
                    if (frm.ckboxEscrito.Checked) vEscrito = "Si";
                    else vEscrito = "No";

                    dgvIdiomas.Rows.Add(frm.cboxIdioma.Text, frm.cboxIdioma.SelectedValue.ToString(),
                        frm.cboxNivel.Text, vOral, vEscrito, frm.txtObservaciones.Text);
                    dgvIdiomas.Rows.Remove(dgvIdiomas.CurrentRow);
                }
            }
        }

        private void dgvCursosRealizados_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //AREA, CURSO, IDCURSO, NOMBRE, FECHA , ENTIDADeDUCATIVA
            if (dgvCursosRealizados.SelectedRows.Count != 0)
            {
                frmCursosRealizados frm = new frmCursosRealizados();
                frm.cboxAreaCurso.Text = dgvCursosRealizados.CurrentRow.Cells[0].Value.ToString();
                frm.CargarCursos();
                frm.cboxCurso.Text = dgvCursosRealizados.CurrentRow.Cells[1].Value.ToString();
                frm.txtNombre.Text = dgvCursosRealizados.CurrentRow.Cells[3].Value.ToString();
                frm.txtFecha.Text = dgvCursosRealizados.CurrentRow.Cells[4].Value.ToString();
                frm.txtEntidadEducativa.Text = dgvCursosRealizados.CurrentRow.Cells[5].Value.ToString();
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    dgvCursosRealizados.Rows.Add(frm.cboxAreaCurso.Text, frm.cboxCurso.Text,
                        frm.cboxCurso.SelectedValue.ToString()
                        , frm.txtNombre.Text, frm.txtFecha.Text.TrimStart("  /  /".ToCharArray()),
                        frm.txtEntidadEducativa.Text);
                    dgvCursosRealizados.Rows.Remove(dgvCursosRealizados.CurrentRow);
                }
            }
        }

       







    }
}

